package com.tang.auth.domain.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.tang.auth.domain.entity.AuthUserBO;

/**
 * 用户领域service
 *
 * @author Tang
 * @date 2024/2/15 8:53
 **/
public interface AuthUserDomainService {
    /**
     * 用户注册
     *
     * @param authUserBO 注册信息
     * @return java.lang.Boolean
     * @author Tang
     * @date 2024/2/15 8:54
     **/
    Boolean register(AuthUserBO authUserBO);

    /**
     * 用户更新信息
     *
     * @param authUserBO 更新信息
     * @return java.lang.Boolean
     * @author Tang
     * @date 2024/2/15 9:21
     **/
    Boolean update(AuthUserBO authUserBO);

    /**
     * 删除用户信息
     *
     * @param authUserBO 待删除的用户
     * @return java.lang.Boolean
     * @author Tang
     * @date 2024/2/15 9:36
     **/
    Boolean delete(AuthUserBO authUserBO);

    /**
     * 修改用户的状态
     *
     * @param authUserBO 用户信息
     * @return java.lang.Boolean
     * @author Tang
     * @date 2024/2/15 9:42
     **/
    Boolean changeStatus(AuthUserBO authUserBO);

    /**
     * 用户登录
     *
     * @param validCode 验证码
     * @author Tang
     * @date 2024/2/17 14:53
     **/
    SaTokenInfo doLogin(String validCode);

    /**
     * 获取用户信息
     *
     * @param authUserBO 查询条件
     * @return com.tang.auth.domain.entity.AuthUserBO
     * @author Tang
     * @date 2024/2/18 14:09
     **/
    AuthUserBO getUserInfo(AuthUserBO authUserBO);

    /**
     * 用户退出登录
     *
     * @param userName 用户名
     * @author Tang
     * @date 2024/2/18 14:18
     **/
    void logout(String userName);
}
